package com.qinggeng.project.system.service;

import com.qinggeng.project.api.dto.GiftReturn;
import com.qinggeng.project.api.dto.SingleItemRefundDTO;
import com.qinggeng.project.system.domain.UserAccountRecordOrderSingleItem;
import com.qinggeng.project.system.domain.vo.CourierRefundOrdersVO;
import com.qinggeng.project.system.domain.vo.ReturnOrdersGoodsVO;
import com.qinggeng.project.system.domain.vo.UserAccountRecordOrderSingleItemVO;
import com.qinggeng.project.system.dto.SysUserAccountRecordOrderSingleItemDTO;

import java.math.BigDecimal;
import java.util.List;

public interface UserAccountRecordOrderSingleItemService{

    boolean insertUserAccountRecordOrderSingleItem(UserAccountRecordOrderSingleItem userAccountRecordOrderSingleItem);


    UserAccountRecordOrderSingleItem checkUserAccountRecordOrderSingleItem(UserAccountRecordOrderSingleItem userAccountRecordOrderSingleItem);


    UserAccountRecordOrderSingleItem getUserAccountRecordOrderSingleItem(UserAccountRecordOrderSingleItem userAccountRecordOrderSingleItem);

    boolean orderSingleItemRefund(SingleItemRefundDTO dto);

    //后台退款详情
    List<UserAccountRecordOrderSingleItemVO> listSysUserAccountRecordOrderSingleItemVO(SysUserAccountRecordOrderSingleItemDTO dto);

    //拒绝退款
    boolean  refuse(Long id);

    //同意退款
    boolean agree(Long id);

    String  getOrderSingleItemRefundOrderNo(SingleItemRefundDTO dto);

    boolean  insertUserAccountRecordOrderSingleItems(List<UserAccountRecordOrderSingleItem> items);

    boolean  orderSingleItemRefunds(SingleItemRefundDTO dto);


    UserAccountRecordOrderSingleItem getUserAccountRecordOrderSingleItem(Long orderGoodsId);

    //刪除售後單
    boolean  deleteOrderSingleItem( UserAccountRecordOrderSingleItem item);

    //取消售後儅
    boolean  cancelOrderSingleItem( UserAccountRecordOrderSingleItem item);


    ReturnOrdersGoodsVO getReturnOrdersGoodsVO(Long orderGoodsId);


    //获取总的退款金额
    BigDecimal getSumReturnMoney(String orderNo);


    /**
     * 根据用户Id计算用户参与抽奖的订单退款金额和退款时间
     * @param
     * @return
     */
    GiftReturn getGiftReturnByUserId();


    //保存退款结果
    boolean updateRefundResult(UserAccountRecordOrderSingleItem item);

    List<CourierRefundOrdersVO> refundListByCourierId(Long courierId,String refundAplStatus);

    /**
     * 修改订单商品团长允许状态
     * @param ordersGoodsId
     * @param refundAplStatus
     */
    boolean updateRefundOrdesGoodsStatus(Long ordersGoodsId, String refundAplStatus);
}
